TFG

Indice

Introducción

Para la realización de este trabajo voy a seguir la metodología estandar CRISP-DM.

Cross Industry Standard Process for Data Mining (CRISP-DM) es un proceso iterativo de creación de software, centrado en el análisis de datos, dividido en 6 fases:

Business Understanding

En esta fase se intenta clarificar el problema a resolver al igual que los objetivos y limitaciones de nuestra solución.

Data Understanding

En esta fase tenemos que obtener nuestros datos, explorarlos y verificar su calidad.

Data Preparation

En esta fase limpiaremos y formatearemos los datos para maximizar su potencial.

Modeling

En esta fase estudiaremos diferentes formas de realizar los modelos de recomendación y diseñare el modelo.

Evaluation

En esta fase estudiaremos el funcionamiento del modelo

Deployment

En esta fase se detallan los pasos de implementación del sistema en un ambiente profesional y las posibles mejoras.

Drawing

Organizar correctamente

BIBLIOGRAFIA

CRISP DM Pete Chapman, Julian Clinton, Randy Kerber, Thomas Khabaza, Thomas Reinartz, Colin Shearer, and Rüdiger Wirth (2000); The CRISP-DM User Guide https://www.the-modeling-agency.com/crisp-dm.pdf

Phase 1 of the CRISP-DM Process Model: Business Understanding

El objetivo de este Trabajo de Fin de Grado es realizar un sistema de recomendación de películas basado en contenidos (Content-based recommender system), con verificación de recomendaciones basadas en las visualizaciones de otros usuarios.

Este trabajo no tiene un fin comercial. De todos modos, su objetivo comercial sería estudiar las técnicas de sistemas de recomendación y proporcionar una solucíon propia a este problema.

La restricción principal de este trabajo es el tiempo.

Debe ser presentado cualquiera de las siguientes tres convocatorias, Febrero, Junio o Septiembre.

El impacto de este trabajo será a nivel académico y de demostración de las tecnologías actuales de ML y de sistemas de codificación del lenguaje natural.

Phase 2 of the CRISP-DM Process Model: Data Understanding

2.1 Gathering data

El conjunto de datos ha sido recogido por mi utilizando un programa de webscrapping realizado en python.

En concreto el programa de webscrapping sigue el siguiente esquema:

La pagina web de metacritic tiene un top de 145 páginas de péliculas que cada una de ellas dispone de 100 películas:

DiccionarioPelicula=[]
Para cada numero x de 1 a 145:
    pagina= descargarHTMLPagina(x);
    Para cada numero y de 1 a 100:
        pelicula = descargarHTMLPelicula(y)
        datosPelicula=procesarPelicula(pelicula)
        DiccionarioPelicula.añadir(datosPelicula)



PENDIENTE: #EXPLICAR EN DETALLE FUNCIONES

2.2 Describing the data

Primero importaré las librerías necesarias y el dataset.

Habiendo importado el dataframe correctamente, usaré el método de pandas dataframe info.

Como podemos ver, disponemos de 13255 entradas con 12 columnas.

Solo 3 de estas columnas son variables discretas, rating, year of release y rank.

   Rating contiene la nota de 0 a 10 impuesta por los usuarios.

   Rank contiene la posición 1-15000 en la que esta película (impuesto por metacritic)

   Year contiene el año de salida de la película.


Es esperable que los atributos rating y rank esten fuertemente correlados ya que expresan información muy parecida. Esta afirmación la comprobaré mas tarde, ya que si el valor de correlación es muy alto podríamos considerar un solo atributo.

Por otro lado las variables categóricas son las siguientes:

    Title: contiene el titulo de la película.

    age_rating: indica la edad mínima recomendada para la visualización. Posteriormente haré un análisis para representarla como un entero.

    genre: indica el género.

    director: nombre del director principal de la película.

    producer: nombre de la productora.

    actor: nombre del actor principal de la película.

    description: parrafo con la descripción de la película.

    img: url de la carátula de la película.

    url: url de la página de metacritic donde se describe la película.

2.3 Exploring data

Como podemos observar, nuestro dataset está compuesto por películas dispuestas en 22 géneros.

El drama es el género más común por grán mayoría. Seguido por acción Acción, documentales y biografías.

Como no vamos a realizar una predicción de genéneros de películas, en principio, este desbalanceo no presentará un problema en el futuro.

Por otra parte, ratings de edad de las películas se disponen de la siguiente forma:

Los años de salida siguen la siguiente distribución

Como podemos observar, desde el año 2000 a habido un crecimiento lineal en la producción de películas, a excepción de 2 parones en los siguientes años:

2.4 Verifying data quality

EXPLICAR PROBLEMA DE LOS NULOS Y DE LAS VARIABLES CATEGORICAS

Phase 3 of the CRISP-DM Process Model: Data Preparation

Selecting data

Cleaning data

Constructing data

Integrating data

Formatting data


Como podemos observar, esta columna está tambíen muy desbalanceada, a demas tiene un alto contenido de valores nulos, de todos modos, vamos a realizar data wrangling de forma que agrupamos estas variables categóricas en edades como numeros enteros.

Como podemos observar, hemos eliminado las variables categóricas y el resultado es mucho mas claro.

Seguimos teniendo una gran cantidad de valores sin calificar (valor -1 en el eje x), sin embargo, como la gran mayoría de valores se encuentran entre 13 y 18 creo que sería buena idea sustituirlo por el valor medio.

Esta distribución sería más apropiada teniendo en cuenta los datos no nulos.

Phase 4 of the CRISP-DM Process Model: Modeling

Phase 5 of the CRISP-DM Process Model: Evaluation

Phase 6 of the CRISP-DM Process Model: Deployment